﻿using System.Collections.Generic;
using CID.Domain.Infrastructure;

namespace CID.Domain.Development
{
    public interface IVersion : IDescribedEntity
    {
        IComponent Component { get; }
        IRelease Release { get; }
        IDeploymentDefinition DeploymentDefinition { get; }
        IPackage ActivePackage { get; }
        IEnumerable<IPackage> Packages { get; }
        IEnumerable<IComponent> DependsOn { get; }

        string GetFullName();
        void AddPackage(IPackage package);
        void SetActivePackage(IPackage package);

        void SetRelease(IRelease release);
        void ResetRelease();
        void AddDependency(IComponent component);
        void RemoveDepedency(IComponent component);

        IVersion CreateCopy();
    }
}
